package com.tedu.api.thread;

/**
 * setDaemon(boolean b)设置线程为守护线程,true为守护线程
 *
 * 前台线程/用户线程:创建一个线程
 * 后台线程/守护线程:创建一个线程,并且指定
 *
 * 案例:创建两个线程: t1 露丝 前台线程
 *               t2 杰克 前台线程---指定守护线程
 *  结论: 前台线程挂了,后台线程挂了
 *
 * 软件【工厂】--进程【车间】---线程【车间工人】
 * 所有线程挂了，【守护线程】进程挂了
 *
 * 守护线程多执行1次：特性：守护线程执行按照JVM虚拟机和操作系统调度策略管理
 *                      前台死亡，守护线程短暂性调取1次
 *
 * 所有前台线程死亡，守护线程死亡--进程关闭--软件关闭
 */
public class Thread_Daemon {
    public static void main(String[] args) {
        Thread t1=new Thread(()->{
            for(int i=0;i<5;i++){
                System.out.println("前台线程:露丝德威特布卡特");
                try{
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("线程结束");
        }); //前台/用户线程

        Thread t2=new Thread(()->{
            while(true){
                System.out.println("后台/守护线程:杰克道森");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });  //前台/用户线程--指定后台/守护线程

        t2.setDaemon(true);

        t1.start(); //女主:5秒 跳海 挂
        t2.start(); //男主:5秒 挂
    }
}
